package managed;

import java.util.ArrayList;
import java.util.HashMap;

import javax.faces.component.UIForm;
import javax.faces.component.html.HtmlDataTable;
import javax.sql.DataSource;

import net.sourceforge.pbeans.Store;
import net.sourceforge.pbeans.StoreException;
import net.sourceforge.pbeans.data.GenericDataSource;
import net.sourceforge.pbeans.data.ResultsIterator;

import Modelo.Conferencia;
import Modelo.Pregunta;
import Modelo.Votacion_conferencia;
import Modelo.Votacion_pregunta;

public class Estadisticas {
	
	private Conferencia conferenciaElegida;
	
	private UIForm formConf;
	
	private ArrayList<Conferencia> conferencias;
	
	private ArrayList<Votacion_conferencia> votos;
	
	private double promedio;
	
	private int numVotos;
	
	private DataSource dataSource;
	private Store basededatos;
	private HtmlDataTable tabla;
	private HtmlDataTable tabla2;
	public HtmlDataTable getTabla2() {
		return tabla2;
	}


	public void setTabla2(HtmlDataTable tabla2) {
		this.tabla2 = tabla2;
	}


	public Pregunta getPreguntaElegida() {
		return preguntaElegida;
	}


	public void setPreguntaElegida(Pregunta preguntaElegida) {
		this.preguntaElegida = preguntaElegida;
	}



	private int votos0;
	private int votos1;
	private int votos2;
	private int votos3;
	private int votos4;
	private int votos5;
	
	private ArrayList<Pregunta> preguntas;

	private Pregunta preguntaElegida;
	
	public void cargarPreguntas (){
		
		ArrayList<Pregunta> preg= new ArrayList<Pregunta>();		
		
		ResultsIterator ri2 = null;
		try {
			ri2 = basededatos.select(Pregunta.class);
		} catch (StoreException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		while(ri2.hasNext()){
			preg.add((Pregunta) ri2.next());
		}
		
		preguntas = preg;
	}
	
	
	   public ArrayList<Pregunta> getPreguntas() {
		return preguntas;
	}


	public void setPreguntas(ArrayList<Pregunta> preguntas) {
		this.preguntas = preguntas;
	}


	public String editDataItem() {

	        // Get selected MyData item to be edited.
	        conferenciaElegida = (Conferencia) tabla.getRowData();

			promedio=0;
			numVotos=0;
			votos1=0;
			votos0=0;
			votos2=0;
			votos3=0;
			votos4=0;
			votos5=0;
			
			ArrayList<Votacion_conferencia> votos = new ArrayList<Votacion_conferencia>();
	        try {
				
				String idConf = basededatos.getPersistentID(conferenciaElegida).toString();
			System.out.println("ID CONFERENCIA:"+idConf);
			 HashMap<String, String> valoresABuscar = new HashMap<String, String>();
			    valoresABuscar.put("cod_conferencia", idConf);
				
				ResultsIterator ri2 = basededatos.select(Votacion_conferencia.class,valoresABuscar);
				while(ri2.hasNext()){
					Votacion_conferencia voto = (Votacion_conferencia)ri2.next();
					System.out.println("VOTACION:"+voto.getVotacion());
					votos.add(voto);
					promedio=promedio+voto.getVotacion();
					numVotos++;
					if(voto.getVotacion()==0){
						votos0++;
					}
					if(voto.getVotacion()==1){
						votos1++;
					}
					if(voto.getVotacion()==2){
						votos2++;
					}
					if(voto.getVotacion()==3){
						votos3++;
					}
					if(voto.getVotacion()==4){
						votos4++;
					}
					if(voto.getVotacion()==5){
						votos5++;
					}
				
				
				}
				
				promedio= promedio/votos.size();
				this.votos = votos;
				
				
			} catch (StoreException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			

	        

	        return "seleccionado"; // Navigation case.
	    }
	
	public String editDataItem2() {

        // Get selected MyData item to be edited.
        preguntaElegida = (Pregunta) tabla2.getRowData();

		promedio=0;
		numVotos=0;
		votos1=0;
		votos0=0;
		votos2=0;
		votos3=0;
		votos4=0;
		votos5=0;
		
		ArrayList<Votacion_pregunta> votos = new ArrayList<Votacion_pregunta>();
        try {
			
			String idConf = basededatos.getPersistentID(preguntaElegida).toString();
		System.out.println("ID PREGUNTA:"+idConf);
		 HashMap<String, String> valoresABuscar = new HashMap<String, String>();
		    valoresABuscar.put("cod_pregunta", idConf);
			
			ResultsIterator ri2 = basededatos.select(Votacion_pregunta.class,valoresABuscar);
			while(ri2.hasNext()){
				Votacion_pregunta voto = (Votacion_pregunta)ri2.next();
				System.out.println("VOTACION:"+voto.getVotacion());
				votos.add(voto);
				promedio=promedio+voto.getVotacion();
				numVotos++;
				if(voto.getVotacion()==0){
					votos0++;
				}
				if(voto.getVotacion()==1){
					votos1++;
				}
				if(voto.getVotacion()==2){
					votos2++;
				}
				if(voto.getVotacion()==3){
					votos3++;
				}
				if(voto.getVotacion()==4){
					votos4++;
				}
				if(voto.getVotacion()==5){
					votos5++;
				}
			
			
			}
			
			promedio= promedio/votos.size();
			
			
			
		} catch (StoreException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		

        

        return "seleccionadop"; // Navigation case.
    }




	public int getVotos0() {
		return votos0;
	}




	public void setVotos0(int votos0) {
		this.votos0 = votos0;
	}




	public int getVotos1() {
		return votos1;
	}




	public void setVotos1(int votos1) {
		this.votos1 = votos1;
	}




	public int getVotos2() {
		return votos2;
	}




	public void setVotos2(int votos2) {
		this.votos2 = votos2;
	}




	public int getVotos3() {
		return votos3;
	}




	public void setVotos3(int votos3) {
		this.votos3 = votos3;
	}




	public int getVotos4() {
		return votos4;
	}




	public void setVotos4(int votos4) {
		this.votos4 = votos4;
	}




	public int getVotos5() {
		return votos5;
	}




	public void setVotos5(int votos5) {
		this.votos5 = votos5;
	}




	public int getNumVotos() {
		return numVotos;
	}




	public void setNumVotos(int numVotos) {
		this.numVotos = numVotos;
	}




	public ArrayList<Votacion_conferencia> getVotos() {
		return votos;
	}




	public void setVotos(ArrayList<Votacion_conferencia> votos) {
		this.votos = votos;
	}




	public double getPromedio() {
		return promedio;
	}




	public void setPromedio(double promedio) {
		this.promedio = promedio;
	}




	public HtmlDataTable getTabla() {
		return tabla;
	}




	public void setTabla(HtmlDataTable tabla) {
		this.tabla = tabla;
	}




	public Estadisticas(){
		
	}

	

	public UIForm getFormConf() {
		cargarConferencias();
		cargarPreguntas();
		return formConf;
	}

	private void cargarConferencias() {
		System.out.println("Cargando Conferencistas");
		
		ArrayList<Conferencia> conferencias = new ArrayList<Conferencia>();
		try {
			dataSource = new GenericDataSource(
					"com.mysql.jdbc.Driver",
					"jdbc:mysql://localhost/smevents?user=root&password=satiro");
			basededatos = new Store(dataSource);
			ResultsIterator ri2 = basededatos.select(Conferencia.class);
			while(ri2.hasNext()){
				Conferencia conference = (Conferencia)ri2.next();
				System.out.println(conference.getDescripcion());
				conferencias.add(conference);
			
			}
			this.conferencias = conferencias;
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (StoreException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

	public Conferencia getConferenciaElegida() {
		return conferenciaElegida;
	}



	public void setConferenciaElegida(Conferencia conferenciaElegida) {
		this.conferenciaElegida = conferenciaElegida;
	}



	public ArrayList<Conferencia> getConferencias() {
		return conferencias;
	}



	public void setConferencias(ArrayList<Conferencia> conferencias) {
		this.conferencias = conferencias;
	}



	public void setFormConf(UIForm formConf) {
		
		this.formConf = formConf;
	}
	

}
